import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';

/**
 * 导出表格数据为Excel
 * @param {Array} data - 表格数据数组
 * @param {Array} columns - 表格列配置
 * @param {String} fileName - 导出文件名
 */
export function exportTableToExcel(data, columns, fileName = '表格数据') {
  // 过滤需要导出的列
  const exportColumns = columns.filter(col => !col.hideInExport);
  
  // 准备导出数据
  const exportData = data.map(record => {
    const row = {};
    exportColumns.forEach(col => {
      // 处理有自定义渲染函数的列
      if (col.render) {
        // 简单处理文本内容，复杂场景可能需要特殊处理
        const renderResult = col.render(record);
        row[col.title] = renderResult?.text || renderResult || record[col.dataIndex];
      } else {
        row[col.title] = record[col.dataIndex] !== undefined ? record[col.dataIndex] : '';
      }
    });
    return row;
  });
  
  // 创建工作簿和工作表
  const worksheet = XLSX.utils.json_to_sheet(exportData);
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  
  // 生成Excel文件并下载
  const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
  const blob = new Blob([excelBuffer], { type: 'application/octet-stream' });
  saveAs(blob, `${fileName}.xlsx`);
}
